Internal file for style

logo of company

Where we see the pipeline processes

Author: Adrien Taudière

Date: December 1, 2025

Code
library(knitr)
library(targets)
library(MiscMetabar)
here::i_am("analysis/01_bioinformatics.qmd")
source(here::here("R/functions.R"))
Code
#' ggplot theme for IdEst
#'
#' @description
#' This theme is used by Adrien Taudiere [IdEst](https://adrientaudiere.com/).
#'  Based on [hrbrthemes](https://github.com/hrbrmstr/hrbrthemes/tree/master)
#' `hrbrthemes::theme_ipsum()` by boB Rudis.
#'
#' @param sans_family Font family for sans serif text (default is
#'  "Roboto Condensed" on Windows and "Roboto Condensed Light" on other OS).
#' @param serif_family Font family for serif text (default is "Linux Libertine G").
#' @param mono_family Font family for monospaced text (default is "Fira Code").
#' @param base_size Base font size (default is 11.5).
#' @param plot_title_family Font family for title (default is serif_family).
#' @param plot_title_size Font size for title (default is 18).
#' @param plot_title_face Font face for title (default is "bold").
#' @param plot_title_margin Margin below title (default is 10).
#' @param subtitle_family Font family for subtitle (default is serif_family).
#' @param subtitle_size Font size for subtitle (default is 13).
#' @param subtitle_face Font face for subtitle (default is "plain").
#' @param subtitle_margin Margin below subtitle (default is 15).
#' @param subtitle_color Font color for subtitle (default is "grey30").
#' @param strip_text_family Font family for facet strip text (default is mono_family).
#' @param strip_text_size Font size for facet strip text (default is 13).
#' @param strip_text_face Font face for facet strip text (default is "plain").
#' @param strip_back_grey Logical, whether to use grey background for facet strips
#'   (default is FALSE).
#' @param caption_family Font family for caption (default is sans_family).
#' @param caption_size Font size for caption (default is 9).
#' @param caption_face Font face for caption (default is "plain").
#' @param caption_margin Margin above caption (default is 10).
#' @param axis_text_size Font size for axis text (default is 80\% of base_size).
#' @param axis_text_family  Font family for axis text (default is sans_family).
#' @param axis_title_family Font family for axis titles (default is mono_family).
#' @param axis_title_size Font size for axis titles (default is 12).
#' @param axis_title_face Font face for axis titles (default is "plain").
#' @param axis_title_just Justification for axis titles (default is "c" for center).
#' @param plot_margin Margin around the plot (default is margin(12, 12, 12, 12)).
#' @param panel_spacing Spacing between panels (default is unit(1.2, "lines")).
#' @param grid_col Color for grid lines (default is "#cccccc").
#' @param grid Logical or character, whether to show grid lines (default is TRUE).
#' @param axis_col Color for axis lines (default is "#cccccc").
#' @param axis Logical or character, whether to show axis lines (default is FALSE).
#' @param ticks Logical, whether to show axis ticks (default is FALSE).
#'
#' @return A ggplot2 theme object.
#' @author Adrien Taudiere
#' @export
#'
theme_idest <- function(
  sans_family = if (.Platform$OS.type == "windows") {
    "Roboto Condensed"
  } else {
    "Roboto Condensed Light"
  },
  serif_family = "Linux Libertine G",
  mono_family = "Fira Code",
  base_size = 11.5,
  plot_title_family = serif_family,
  plot_title_size = 18,
  plot_title_face = "bold",
  plot_title_margin = 10,
  subtitle_family = serif_family,
  subtitle_size = 13,
  subtitle_face = "plain",
  subtitle_margin = 15,
  subtitle_color = "grey30",
  strip_text_family = mono_family,
  strip_text_size = 13,
  strip_text_face = "plain",
  strip_back_grey = FALSE,
  caption_family = sans_family,
  caption_size = 9,
  caption_face = "plain",
  caption_margin = 10,
  axis_text_size = base_size * 0.8,
  axis_text_family = sans_family,
  axis_title_family = mono_family,
  axis_title_size = 12,
  axis_title_face = "plain",
  axis_title_just = "c",
  plot_margin = margin(12, 12, 12, 12),
  panel_spacing = grid::unit(1.2, "lines"),
  grid_col = "#cccccc",
  grid = TRUE,
  axis_col = "#cccccc",
  axis = FALSE,
  ticks = FALSE
) {
  ret <- theme_minimal(base_family = sans_family, base_size = base_size)

  ret <- ret + theme(legend.background = element_blank())
  ret <- ret + theme(legend.key = element_blank())

  ret <- ret + theme(plot.margin = plot_margin)
  ret <- ret + theme(panel.spacing = panel_spacing)

  if (inherits(grid, "character") | grid == TRUE) {
    ret <- ret + theme(panel.grid = element_line(color = grid_col, linewidth = 0.2))
    ret <- ret + theme(panel.grid.major = element_line(color = grid_col, linewidth = 0.2))
    ret <- ret + theme(panel.grid.minor = element_line(color = grid_col, linewidth = 0.15))

    if (inherits(grid, "character")) {
      if (regexpr("X", grid)[1] < 0) {
        ret <- ret + theme(panel.grid.major.x = element_blank())
      }
      if (regexpr("Y", grid)[1] < 0) {
        ret <- ret + theme(panel.grid.major.y = element_blank())
      }
      if (regexpr("x", grid)[1] < 0) {
        ret <- ret + theme(panel.grid.minor.x = element_blank())
      }
      if (regexpr("y", grid)[1] < 0) {
        ret <- ret + theme(panel.grid.minor.y = element_blank())
      }
    }
  } else {
    ret <- ret + theme(panel.grid = element_blank())
    ret <- ret + theme(panel.grid.major = element_blank())
    ret <- ret + theme(panel.grid.major.x = element_blank())
    ret <- ret + theme(panel.grid.major.y = element_blank())
    ret <- ret + theme(panel.grid.minor = element_blank())
    ret <- ret + theme(panel.grid.minor.x = element_blank())
    ret <- ret + theme(panel.grid.minor.y = element_blank())
  }

  if (inherits(axis, "character") | axis == TRUE) {
    ret <- ret + theme(axis.line = element_line(color = axis_col, linewidth = 0.15))
    if (inherits(axis, "character")) {
      axis <- tolower(axis)
      if (regexpr("x", axis)[1] < 0) {
        ret <- ret + theme(axis.line.x = element_blank())
      } else {
        ret <- ret + theme(axis.line.x = element_line(color = axis_col, linewidth = 0.15))
      }
      if (regexpr("y", axis)[1] < 0) {
        ret <- ret + theme(axis.line.y = element_blank())
      } else {
        ret <- ret + theme(axis.line.y = element_line(color = axis_col, linewidth = 0.15))
      }
    } else {
      ret <- ret + theme(axis.line.x = element_line(color = axis_col, linewidth = 0.15))
      ret <- ret + theme(axis.line.y = element_line(color = axis_col, linewidth = 0.15))
    }
  } else {
    ret <- ret + theme(axis.line = element_blank())
  }

  if (!ticks) {
    ret <- ret + theme(axis.ticks = element_blank())
    ret <- ret + theme(axis.ticks.x = element_blank())
    ret <- ret + theme(axis.ticks.y = element_blank())
  } else {
    ret <- ret + theme(axis.ticks = element_line(linewidth = 0.15))
    ret <- ret + theme(axis.ticks.x = element_line(linewidth = 0.15))
    ret <- ret + theme(axis.ticks.y = element_line(linewidth = 0.15))
    ret <- ret + theme(axis.ticks.length = grid::unit(5, "pt"))
  }

  xj <- switch(tolower(substr(axis_title_just, 1, 1)),
    b = 0,
    l = 0,
    m = 0.5,
    c = 0.5,
    r = 1,
    t = 1
  )
  yj <- switch(tolower(substr(axis_title_just, 2, 2)),
    b = 0,
    l = 0,
    m = 0.5,
    c = 0.5,
    r = 1,
    t = 1
  )

  ret <- ret + theme(axis.text = element_text(
    size = axis_text_size,
    family = axis_text_family,
    margin = margin(t = 0, r = 0)
  ))
  ret <- ret + theme(axis.text.x = element_text(
    size = axis_text_size,
    family = axis_text_family,
    margin = margin(t = 0)
  ))
  ret <- ret + theme(axis.text.y = element_text(
    size = axis_text_size,
    family = axis_text_family,
    margin = margin(r = 0)
  ))

  ret <- ret + theme(axis.title = element_text(size = axis_title_size, family = axis_title_family))
  ret <- ret + theme(
    axis.title.x = element_text(
      hjust = xj,
      size = axis_title_size,
      family = axis_title_family,
      face = axis_title_face
    )
  )
  ret <- ret + theme(
    axis.title.y = element_text(
      hjust = yj,
      size = axis_title_size,
      family = axis_title_family,
      face = axis_title_face
    )
  )
  ret <- ret + theme(
    axis.title.y.right = element_text(
      hjust = yj,
      size = axis_title_size,
      angle = 90,
      family = axis_title_family,
      face = axis_title_face
    )
  )

  ret <- ret + theme(
    strip.text = element_text(
      hjust = 0,
      size = strip_text_size,
      face = strip_text_face,
      family = strip_text_family
    )
  )

  ret <- ret + theme(
    plot.title = element_text(
      hjust = 0,
      size = plot_title_size,
      margin = margin(b = plot_title_margin),
      family = plot_title_family,
      face = plot_title_face
    )
  )
  ret <- ret + theme(
    plot.subtitle = element_text(
      hjust = 0,
      size = subtitle_size,
      margin = margin(b = subtitle_margin),
      family = subtitle_family,
      face = subtitle_face,
      color = subtitle_color
    )
  )
  ret <- ret + theme(
    plot.caption = element_text(
      hjust = 1,
      size = caption_size,
      margin = margin(t = caption_margin),
      family = caption_family,
      face = caption_face
    )
  )

  if (strip_back_grey) {
    ret <- ret + theme(
      strip.background = element_rect(fill = "grey90", color = NA),
      panel.border = element_rect(color = "grey90", fill = NA)
    )
  }

  ret
}


#' IdEst color palettes
#'
#' @description
#'  Palettes of color for IdEst including also
#'  some palettes from MoMAColors
#'   <https://github.com/BlakeRMills/MoMAColors/blob/main/R/Functions.R>
#'
#'  The available palette are c("all_color_idest", "ligth_color_idest",
#'  "dark_color_idest", "Picabia", "Picasso", "Levine2", "Rattner", "Sidhu",
#'  "Hokusai2", "Hokusai3")
#' @export
#' @author Adrien Taudiere
idest_pal <- list(
  all_color_idest = list(
    c(
      "#dc863b",
      "#faefd1",
      "#2e7891",
      "#8a9da4",
      "#aa4c26",
      "#c8a734",
      "#a6d3e3",
      "#003f5f",
      "#ba63b6",
      "#f20040",
      "#774fa0",
      "#b4dfa7"
    ),
    c(1:11),
    colorblind = FALSE
  ),
  ligth_color_idest = list(
    c("#faefd1", "#a6d3e3", "#b4dfa7", "#8a9da4"),
    c(1:4),
    colorblind = FALSE
  ),
  dark_color_idest = list(
    c(
      "#dc863b",
      "#2e7891",
      "#aa4c26",
      "#c8a734",
      "#003f5f",
      "#ba63b6",
      "#f20040",
      "#774fa0"
    ),
    c(1:8),
    colorblind = FALSE
  ),
  Picabia = list(
    c(
      "#53362e",
      "#744940",
      "#9f7064",
      "#c99582",
      "#e6bcac",
      "#e2d8d6",
      "#a5a6ae",
      "#858794",
      "#666879",
      "#515260",
      "#3d3d47"
    ),
    c(10, 4, 8, 1, 6, 3, 7, 2, 9, 5, 11),
    colorblind = TRUE
  ),
  Picasso = list(
    c(
      "#d5968c",
      "#c2676d",
      "#5c363a",
      "#995041",
      "#45939c",
      "#0f6a81"
    ),
    c(6, 3, 4, 2, 1, 5),
    colorblind = TRUE
  ),
  Levine2 = list(
    c(
      "#E3C1CB",
      "#AD5A6B",
      "#C993A2",
      "#365C83",
      "#384351",
      "#4D8F8B",
      "#CDD6AD"
    ),
    c(7, 1, 5, 3, 6, 2, 4),
    colorblind = TRUE
  ),
  Rattner = list(
    c(
      "#de8e69",
      "#f1be99",
      "#c1bd38",
      "#7a9132",
      "#4c849a",
      "#184363",
      "#5d5686",
      "#a39fc9"
    ),
    c(1, 5, 6, 2, 3, 7, 8, 4),
    colorblind = TRUE
  ),
  Sidhu = list(
    c(
      "#af4646",
      "#762b35",
      "#005187",
      "#251c4a",
      "#78adb7",
      "#4c9a77",
      "#1b7975"
    ),
    c(5, 2, 6, 7, 3, 4, 1),
    colorblind = TRUE
  ),
  Hokusai2 = list(c("#abc9c8", "#72aeb6", "#4692b0", "#2f70a1", "#134b73", "#0a3351"), c(5, 2, 4, 1, 6, 3), colorblind = TRUE), # copy from https://github.com/BlakeRMills/MetBrewer/blob/main/R/PaletteCode.R
  Hokusai3 = list(c("#d8d97a", "#95c36e", "#74c8c3", "#5a97c1", "#295384", "#0a2e57"), c(4, 2, 5, 3, 1, 6), colorblind = TRUE) # copy from https://github.com/BlakeRMills/MetBrewer/blob/main/R/PaletteCode.R
)

#' IdEst continuous color scales for ggplot2
#'
#' @param palette_name The name of the palette to use.
#'  The available palette are c("all_color_idest", "ligth_color_idest",
#'  "dark_color_idest", "Picabia", "Picasso", "Levine2", "Rattner", "Sidhu",
#'  "Hokusai2", "Hokusai3"). See [idest_pal] for more details.
#' @param direction Direction of the palette. 1 for standard, -1 for reversed.
#' @param ... Additional arguments passed to [ggplot2::scale_color_gradientn()].
#'
#' @returns A ggplot2 scale object.
#' @export
#' @author Adrien Taudiere
scale_color_idest_c <- function(palette_name = "all_color_idest", direction = 1, ...) {
  `%notin%` <- Negate(`%in%`)

  if (direction %notin% c(1, -1)) {
    stop("Direction not valid. Please use 1 for standard palette or -1 for reversed palette.")
  }

  scale_color_gradientn(
    colors = idest_colors(
      palette_name = palette_name,
      direction = direction,
      override_order = F
    ),
    ...
  )
}

#' IdEst continuous fill scales for ggplot2
#' @inheritParams scale_color_idest_c
#' @returns A ggplot2 scale object.
#' @export
#' @author Adrien Taudiere
scale_fill_idest_c <- function(palette_name = "all_color_idest", direction = 1, ...) {
  `%notin%` <- Negate(`%in%`)

  if (direction %notin% c(1, -1)) {
    stop("Direction not valid. Please use 1 for standard palette or -1 for reversed palette.")
  }

  scale_color_gradientn(
    colors = idest_colors(
      palette_name = palette_name,
      direction = direction,
      override_order = F
    ),
    ...
  )
}

#' IdEst discrete color scales for ggplot2
#'
#' @param palette_name The name of the palette to use.
#'  The available palette are c("all_color_idest", "ligth_color_idest",
#'  "dark_color_idest", "Picabia", "Picasso", "Levine2", "Rattner", "Sidhu",
#'  "Hokusai2", "Hokusai3"). See [idest_pal] for more details.
#' @param direction Direction of the palette. 1 for standard, -1 for reversed.
#' @param override_order Logical (default FALSE),
#'   whether to override the order of the palette.
#' @param ... Additional arguments passed to [ggplot2::scale_color_gradientn()].
#' @export
#' @returns A ggplot2 scale object.
#' @author Adrien Taudiere
scale_color_idest_d <- function(palette_name = "all_color_idest",
                                direction = 1,
                                override_order = FALSE,
                                ...) {
  discrete_scale(
    aesthetics = "colour",
    scale_name = "moma_d",
    palette = function(n) {
      idest_colors(
        palette_name = palette_name,
        n = n,
        direction = direction,
        override_order = override_order
      )
    },
    ...
  )
}

#' IdEst discrete fill scales for ggplot2
#' @inheritParams scale_color_idest_d
#' @returns A ggplot2 scale object.
#' @export
#' @author Adrien Taudiere
scale_fill_idest_d <- function(palette_name = "all_color_idest",
                               direction = 1,
                               override_order = FALSE,
                               ...) {
  discrete_scale(
    aesthetics = "fill",
    scale_name = "moma_d",
    palette = function(n) {
      idest_colors(
        palette_name = palette_name,
        n = n,
        direction = direction,
        override_order = override_order
      )
    },
    ...
  )
}


#' IdEst colors for ggplot theme_idest
#'
#' @param palette_name The name of the palette to use.
#' The available palette are c("all_color_idest", "ligth_color_idest",
#' "dark_color_idest", "Picabia", "Picasso", "Levine2", "Rattner", "Sidhu",
#' "Hokusai2", "Hokusai3"). See [idest_pal] for more details.
#' @param n Number of colors to return.
#' @param type Type of palette. Either "discrete" or "continuous".
#' @param direction Direction of the palette. 1 for standard, -1 for reversed.
#' @param override_order Logical, whether to override the order of the palette.
#'
#' @returns A vector of colors.
#' @author Adrien Taudiere
#' @export
idest_colors <- function(palette_name = "all_color_idest",
                         n,
                         type = c("discrete", "continuous"),
                         direction = c(1, -1),
                         override_order = FALSE) {
  `%notin%` <- Negate(`%in%`)

  palette <- idest_pal[[palette_name]]

  if (is.null(palette) | is.numeric(palette_name)) {
    stop("Palette does not exist.")
  }

  if (missing(n)) {
    n <- length(palette[[1]])
  }

  if (missing(direction)) {
    direction <- 1
  }

  if (direction %notin% c(1, -1)) {
    stop("Direction not valid. Please use 1 for standard palette or -1 for reversed palette.")
  }

  if (missing(type)) {
    if (n > length(palette[[1]])) {
      type <- "continuous"
    } else {
      type <- "discrete"
    }
  }

  type <- match.arg(type)


  if (type == "discrete" && n > length(palette[[1]])) {
    stop(
      "Number of requested colors greater than what discrete palette can offer, \n use continuous instead."
    )
  }

  continuous <- if (direction == 1) {
    grDevices::colorRampPalette(palette[[1]])(n)
  } else {
    grDevices::colorRampPalette(rev(palette[[1]]))(n)
  }

  discrete <- if (direction == 1 & override_order == FALSE) {
    palette[[1]][which(palette[[2]] %in% c(1:n) == TRUE)]
  } else if (direction == -1 & override_order == FALSE) {
    rev(palette[[1]][which(palette[[2]] %in% c(1:n) == TRUE)])
  } else if (direction == 1 & override_order == TRUE) {
    palette[[1]][1:n]
  } else {
    rev(palette[[1]])[1:n]
  }

  out <- switch(type,
    continuous = continuous,
    discrete = discrete
  )
  structure(out, class = "palette", name = palette_name)
}

Summary of the bioinformatic pipeline

Carbon footprint

Code
res_ga <- greenAlgoR::ga_targets(store = here::here("_targets/"))
print(paste0(res_ga$carbon_footprint_total_gCO2, " gCO2 equiv. emitted for the whole pipeline"))
#> [1] "185.099466924978 gCO2 equiv. emitted for the whole pipeline"

Timeline and cpu usage

Code
log_data <- autometric::log_read(
  here::here("data/data_final/autometric_log.txt"),
  units_time = "hours",
  units_memory = "gigabytes"
)

log_data |>
  filter(!grepl("conclude:", phase)) |>
  filter(!grepl("prepare:", phase)) |>
  filter(!grepl("__DEFAULT__", phase)) |>
  ggplot(aes(x = time, y = reorder(phase, desc(time)), color = resident)) +
  geom_line(aes(linewidth = cpu)) +
  scale_color_viridis_b("Memory (Gb)", end = 0.9, direction = -1) +
  theme_idest() +
  xlab("Time (in hours)") +
  ylab("")

Main phyloseq object

You may want to select another targets such as d_asv or d_vs_mumu for example.

Code
d_pq <- clean_pq(tar_read("d_vs", store=here::here("_targets/")))
Code
summary_plot_pq(d_pq)

Code
tar_glimpse(script=here::here("_targets.R"), targets_only = TRUE, callr_arguments = list(show = FALSE))
Code
tar_meta(store=here::here("_targets/"), targets_only = TRUE) |> 
  dplyr::mutate(time = paste0(seconds %/% 3600,":",seconds %/% 60,":",floor(seconds %% 60)))|>
  dplyr::select(name, seconds, bytes, format, time) |>
  dplyr::mutate(Gb=round(bytes/10^9,2)) |>
  dplyr::arrange(desc(seconds), desc(bytes))  |> 
  kable()


|name                             |   seconds|      bytes|format |time     |   Gb|
|:--------------------------------|---------:|----------:|:------|:--------|----:|
|d_asv                            | 11972.998|    1097339|rds    |3:199:32 | 0.00|
|tax_tab                          |  3971.426|     798938|rds    |1:66:11  | 0.00|
|ddR                              |  2349.852|  141231407|qs     |0:39:9   | 0.14|
|ddF                              |  1053.016|  130244592|qs     |0:17:33  | 0.13|
|filtered                         |   525.178|        154|rds    |0:8:45   | 0.00|
|quality_raw_seq                  |   469.384|      19034|rds    |0:7:49   | 0.00|
|quality_seq_wo_primers           |   469.014|      18891|rds    |0:7:49   | 0.00|
|cutadapt                         |   345.924| 5439202491|file   |0:5:45   | 5.44|
|quality_seq_filtered_trimmed_REV |   236.071|      11304|rds    |0:3:56   | 0.00|
|quality_seq_filtered_trimmed_FW  |   230.575|      11304|rds    |0:3:50   | 0.00|
|derep_rs                         |   179.230| 2678399208|qs     |0:2:59   | 2.68|
|err_rs                           |   170.105|      24428|qs     |0:2:50   | 0.00|
|derep_fs                         |   169.472| 1681165403|qs     |0:2:49   | 1.68|
|err_fs                           |   163.737|      21602|qs     |0:2:43   | 0.00|
|track_sequences_samples_clusters |   103.993|        443|rds    |0:1:43   | 0.00|
|merged_seq                       |   100.951|    1408727|qs     |0:1:40   | 0.00|
|track_by_samples                 |    99.281|       8932|rds    |0:1:39   | 0.00|
|seqtab_wo_chimera                |    14.227|     805785|rds    |0:0:14   | 0.00|
|bioinfo_report                   |    10.633|          0|rds    |0:0:10   | 0.00|
|d_vs_mumu                        |     5.841|     889413|rds    |0:0:5    | 0.00|
|d_vs                             |     4.078|     902883|rds    |0:0:4    | 0.00|
|d_vs_mumu_rarefy                 |     0.770|     856846|rds    |0:0:0    | 0.00|
|seq_tab_Pairs                    |     0.171|     957602|rds    |0:0:0    | 0.00|
|data_phyloseq                    |     0.105|    1026818|rds    |0:0:0    | 0.00|
|s_d                              |     0.060|      12331|rds    |0:0:0    | 0.00|
|data_raw                         |     0.026|       5224|rds    |0:0:0    | 0.00|
|seqtab                           |     0.010|     798807|rds    |0:0:0    | 0.00|
|asv_tab                          |     0.010|     798670|rds    |0:0:0    | 0.00|
|sam_tab                          |     0.004|       6974|rds    |0:0:0    | 0.00|
|file_sam_data_csv                |     0.002|      24577|file   |0:0:0    | 0.00|
|fastq_files_folder               |     0.001| 6578858328|file   |0:0:0    | 6.58|
|file_refseq_taxo                 |     0.001|   72883169|file   |0:0:0    | 0.07|
|samp_n_otu_table                 |     0.001|       1974|rds    |0:0:0    | 0.00|
|data_fnfs                        |     0.000|       2675|rds    |0:0:0    | 0.00|
|data_fnrs                        |     0.000|       2675|rds    |0:0:0    | 0.00|

Load phyloseq object from targets store

Code
d_pq <- tar_read("d_vs", store=here::here("_targets/"))

The {targets} package is at the core of this project. Please read the intro of the user manual if you don’t know {targets}.

The {targets} package store … targets in a folder and can load (tar_load()) and read (tar_read) object from this folder.

Sample data

Code
DT::datatable(d_pq@sam_data)

Sequences, samples and clusters across the pipeline

Make krona html files

Code
krona(
  clean_pq(d_pq, simplify_taxo = TRUE),
  file = here::here("data/data_final/krona_nb_seq.html")
)
Code
krona(
  clean_pq(d_pq, simplify_taxo = TRUE),
  nb_seq = FALSE,
  file =  here::here("data/data_final/krona_nb_taxa.html")
)

Session Information

Session information are detailed below. More information about the machine, the system, as well as python and R packages, are available in the file data/data_final/information_run.txt .

Code
sessionInfo()
#> R version 4.5.1 (2025-06-13)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Kali GNU/Linux Rolling
#> 
#> Matrix products: default
#> BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
#> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.29.so;  LAPACK version 3.12.0
#> 
#> locale:
#>  [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C              
#>  [3] LC_TIME=fr_FR.UTF-8        LC_COLLATE=fr_FR.UTF-8    
#>  [5] LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8   
#>  [7] LC_PAPER=fr_FR.UTF-8       LC_NAME=C                 
#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
#> [11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       
#> 
#> time zone: Europe/Paris
#> tzcode source: system (glibc)
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices datasets  utils     methods   base     
#> 
#> other attached packages:
#> [1] MiscMetabar_0.14.4 purrr_1.2.0        dplyr_1.1.4        dada2_1.38.0      
#> [5] Rcpp_1.1.0         ggplot2_4.0.1      phyloseq_1.54.0    targets_1.11.4    
#> [9] knitr_1.50        
#> 
#> loaded via a namespace (and not attached):
#>   [1] greenAlgoR_0.1.2            bitops_1.0-9               
#>   [3] deldir_2.0-4                permute_0.9-8              
#>   [5] rlang_1.1.6                 magrittr_2.0.4             
#>   [7] ade4_1.7-23                 matrixStats_1.5.0          
#>   [9] compiler_4.5.1              mgcv_1.9-4                 
#>  [11] png_0.1-8                   callr_3.7.6                
#>  [13] vctrs_0.6.5                 reshape2_1.4.5             
#>  [15] autometric_0.1.2            stringr_1.6.0              
#>  [17] pwalign_1.6.0               pkgconfig_2.0.3            
#>  [19] crayon_1.5.3                fastmap_1.2.0              
#>  [21] backports_1.5.0             XVector_0.50.0             
#>  [23] labeling_0.4.3              Rsamtools_2.26.0           
#>  [25] rmarkdown_2.30              ps_1.9.1                   
#>  [27] xfun_0.54                   cachem_1.1.0               
#>  [29] cigarillo_1.0.0             jsonlite_2.0.0             
#>  [31] biomformat_1.38.0           rhdf5filters_1.22.0        
#>  [33] DelayedArray_0.36.0         Rhdf5lib_1.32.0            
#>  [35] BiocParallel_1.44.0         jpeg_0.1-11                
#>  [37] parallel_4.5.1              prettyunits_1.2.0          
#>  [39] cluster_2.1.8.1             R6_2.6.1                   
#>  [41] bslib_0.9.0                 stringi_1.8.7              
#>  [43] RColorBrewer_1.1-3          benchmarkme_1.0.8          
#>  [45] jquerylib_0.1.4             GenomicRanges_1.62.0       
#>  [47] Seqinfo_1.0.0               SummarizedExperiment_1.40.0
#>  [49] iterators_1.0.14            IRanges_2.44.0             
#>  [51] Matrix_1.7-4                splines_4.5.1              
#>  [53] igraph_2.2.1                tidyselect_1.2.1           
#>  [55] rstudioapi_0.17.1           abind_1.4-8                
#>  [57] yaml_2.3.10                 vegan_2.7-2                
#>  [59] doParallel_1.0.17           codetools_0.2-20           
#>  [61] hwriter_1.3.2.1             processx_3.8.6             
#>  [63] lattice_0.22-7              tibble_3.3.0               
#>  [65] plyr_1.8.9                  Biobase_2.70.0             
#>  [67] withr_3.0.2                 ShortRead_1.68.0           
#>  [69] S7_0.2.1                    benchmarkmeData_1.0.4      
#>  [71] evaluate_1.0.5              survival_3.8-3             
#>  [73] RcppParallel_5.1.11-1       Biostrings_2.78.0          
#>  [75] pillar_1.11.1               BiocManager_1.30.27        
#>  [77] MatrixGenerics_1.22.0       DT_0.34.0                  
#>  [79] renv_1.0.11                 foreach_1.5.2              
#>  [81] stats4_4.5.1                generics_0.1.4             
#>  [83] rprojroot_2.1.1             S4Vectors_0.48.0           
#>  [85] scales_1.4.0                base64url_1.4              
#>  [87] glue_1.8.0                  tools_4.5.1                
#>  [89] interp_1.1-6                data.table_1.17.8          
#>  [91] GenomicAlignments_1.46.0    visNetwork_2.1.4           
#>  [93] rhdf5_2.54.0                grid_4.5.1                 
#>  [95] ape_5.8-1                   crosstalk_1.2.2            
#>  [97] latticeExtra_0.6-31         nlme_3.1-168               
#>  [99] cli_3.6.5                   viridisLite_0.4.2          
#> [101] S4Arrays_1.10.0             gtable_0.3.6               
#> [103] sass_0.4.10                 digest_0.6.39              
#> [105] BiocGenerics_0.56.0         SparseArray_1.10.3         
#> [107] htmlwidgets_1.6.4           farver_2.1.2               
#> [109] htmltools_0.5.8.1           multtest_2.66.0            
#> [111] lifecycle_1.0.4             httr_1.4.7                 
#> [113] here_1.0.2                  secretbase_1.0.5           
#> [115] MASS_7.3-65

Citation

BibTeX citation:
@online{taudière2025,
  author = {Taudière, Adrien},
  title = {Bioinformatics Pipeline Summary},
  date = {2025-12-01},
  langid = {en}
}
For attribution, please cite this work as:
Taudière, Adrien. 2025. “Bioinformatics Pipeline Summary.” December 1, 2025.